/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.edu.pergunta;

import br.edu.assunto.Assunto;
import br.edu.assunto.AssuntoDAO;
import br.edu.disciplina.Disciplina;
import br.edu.util.GenericDAO;
import br.edu.util.HibernateUtil;
import java.util.List;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author 'Pedro
 */
public class PerguntaDAO extends GenericDAO<Pergunta>{
    
    public PerguntaDAO(){
        super(Pergunta.class);
    }

    public boolean salvar(Pergunta pergunta) {
        if(pergunta.getId()==0){
            adicionar(pergunta);
        } else {
            atualizar(pergunta);
        }
        return true;
    }

    public List<Pergunta> pesquisarDescricaoLike(String text) {
        List<Pergunta> perguntas=null;
        setSessao(HibernateUtil.getSessionFactory().openSession());
        setTransacao(getSessao().beginTransaction());
        perguntas = (List<Pergunta>) getSessao().createCriteria(Pergunta.class).add(Restrictions.ilike("descricao", text)).list();
        getSessao().close();
        return perguntas;
    }

    public Pergunta pesquisarCodigo(Integer valueOf) {
        Pergunta pergunta;
        setSessao(HibernateUtil.getSessionFactory().openSession());
        setTransacao(getSessao().beginTransaction());
        pergunta = (Pergunta) getSessao().createCriteria(Pergunta.class).add(Restrictions.eq("id", valueOf)).uniqueResult();
        getSessao().close();
        return pergunta;
    }
    
    public List<Pergunta> pesquisarPorDisciplina(Disciplina valueOf) {
        AssuntoDAO aDAO = new AssuntoDAO();
        List<Assunto> assuntos = aDAO.pesquisarPorDisciplina(valueOf);
        List<Pergunta> pergunta;
        setSessao(HibernateUtil.getSessionFactory().openSession());
        setTransacao(getSessao().beginTransaction());
        pergunta = (List<Pergunta>) getSessao().createCriteria(Pergunta.class).
                add(Restrictions.in("assunto", assuntos)).list();
        getSessao().close();
        return pergunta;
    }
}
